home *** CD-ROM | disk | FTP | other *** search
-
-
-
- TTTTccccllll((((nnnn)))) TTTTccccllll (((( )))) TTTTccccllll((((nnnn))))
-
-
-
- _________________________________________________________________
-
- NNNNAAAAMMMMEEEE
- Tcl - Summary of Tcl language syntax.
- _________________________________________________________________
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The following rules define the syntax and semantics of the
- Tcl language:
-
- [1] A Tcl script is a string containing one or more
- commands. Semi-colons and newlines are command
- separators unless quoted as described below. Close
- brackets are command terminators during command
- substitution (see below) unless quoted.
-
- [2] A command is evaluated in two steps. First, the Tcl
- interpreter breaks the command into _w_o_r_d_s and performs
- substitutions as described below. These substitutions
- are performed in the same way for all commands. The
- first word is used to locate a command procedure to
- carry out the command, then all of the words of the
- command are passed to the command procedure. The
- command procedure is free to interpret each of its
- words in any way it likes, such as an integer, variable
- name, list, or Tcl script. Different commands
- interpret their words differently.
-
- [3] Words of a command are separated by white space (except
- for newlines, which are command separators).
-
- [4] If the first character of a word is double-quote
- (``"'') then the word is terminated by the next
- double-quote character. If semi-colons, close
- brackets, or white space characters (including
- newlines) appear between the quotes then they are
- treated as ordinary characters and included in the
- word. Command substitution, variable substitution, and
- backslash substitution are performed on the characters
- between the quotes as described below. The double-
- quotes are not retained as part of the word.
-
- [5] If the first character of a word is an open brace
- (``{'') then the word is terminated by the matching
- close brace (``}''). Braces nest within the word: for
- each additional open brace there must be an additional
- close brace (however, if an open brace or close brace
- within the word is quoted with a backslash then it is
- not counted in locating the matching close brace). No
- substitutions are performed on the characters between
- the braces except for backslash-newline substitutions
-
-
-
- Page 1 (printed 7/17/95)
-
-
-
-
-
-
- TTTTccccllll((((nnnn)))) TTTTccccllll (((( )))) TTTTccccllll((((nnnn))))
-
-
-
- described below, nor do semi-colons, newlines, close
- brackets, or white space receive any special
- interpretation. The word will consist of exactly the
- characters between the outer braces, not including the
- braces themselves.
-
- [6] If a word contains an open bracket (``['') then Tcl
- performs _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_t_i_o_n. To do this it invokes
- the Tcl interpreter recursively to process the
- characters following the open bracket as a Tcl script.
- The script may contain any number of commands and must
- be terminated by a close bracket (``]''). The result
- of the script (i.e. the result of its last command) is
- substituted into the word in place of the brackets and
- all of the characters between them. There may be any
- number of command substitutions in a single word.
- Command substitution is not performed on words enclosed
- in braces.
-
- [7] If a word contains a dollar-sign (``$'') then Tcl
- performs _v_a_r_i_a_b_l_e _s_u_b_s_t_i_t_u_t_i_o_n: the dollar-sign and
- the following characters are replaced in the word by
- the value of a variable. Variable substition may take
- any of the following forms:
-
- $$$$_n_a_m_e _N_a_m_e is the name of a scalar variable;
- the name is terminated by any character
- that isn't a letter, digit, or
- underscore.
-
- $$$$_n_a_m_e((((_i_n_d_e_x)))) _N_a_m_e gives the name of an array variable
- and _i_n_d_e_x gives the name of an element
- within that array. _N_a_m_e must contain
- only letters, digits, and underscores.
- Command substitutions, variable
- substitutions, and backslash
- substitutions are performed on the
- characters of _i_n_d_e_x.
-
- $$$${{{{_n_a_m_e}}}} _N_a_m_e is the name of a scalar variable.
- It may contain any characters whatsoever
- except for close braces.
-
- There may be any number of variable substitutions in a
- single word. Variable substitution is not performed on
- words enclosed in braces.
-
- [8] If a backslash (``\'') appears within a word then
- _b_a_c_k_s_l_a_s_h _s_u_b_s_t_i_t_u_t_i_o_n occurs. In all cases but those |
- described below the backslash is dropped and the |
- following character is treated as an ordinary character |
- and included in the word. This allows characters such
-
-
-
- Page 2 (printed 7/17/95)
-
-
-
-
-
-
- TTTTccccllll((((nnnn)))) TTTTccccllll (((( )))) TTTTccccllll((((nnnn))))
-
-
-
- as double quotes, close brackets, and dollar signs to
- be included in words without triggering special
- processing. The following table lists the backslash
- sequences that are handled specially, along with the
- value that replaces each sequence.
-
- \aaaa ||
- Audible alert (bell) (0x7).
-
- \bbbb Backspace (0x8).
-
- \ffff Form feed (0xc).
-
- \nnnn Newline (0xa).
-
- \rrrr Carriage-return (0xd).
-
- \tttt Tab (0x9).
-
- \vvvv Vertical tab (0xb).
-
- \<<<<nnnneeeewwwwlllliiiinnnneeee>>>>_w_h_i_t_e_S_p_a_c_e
- A single space character replaces the backslash, |
- newline, and all white space after the newline. |
- This backslash sequence is unique in that it is |
- replaced in a separate pre-pass before the |
- command is actually parsed. This means that it |
- will be replaced even when it occurs between |
- braces, and the resulting space will be treated |
- as a word separator if it isn't in braces or |
- quotes.
-
- \\ Backslash (``\'').
-
- \_o_o_o The digits _o_o_o (one, two, or three of them) give
- the octal value of the character.
-
- \xxxx_h_h The hexadecimal digits _h_h give the hexadecimal |
- value of the character. Any number of digits may |
- be present.
-
- Backslash substitution is not performed on words enclosed in
- braces, except for backslash-newline as described above.
-
- [9] If a hash character (``#'') appears at a point where
- Tcl is expecting the first character of the first word
- of a command, then the hash character and the
- characters that follow it, up through the next newline,
- are treated as a comment and ignored. The comment
- character only has significance when it appears at the
- beginning of a command.
-
-
-
-
- Page 3 (printed 7/17/95)
-
-
-
-
-
-
- TTTTccccllll((((nnnn)))) TTTTccccllll (((( )))) TTTTccccllll((((nnnn))))
-
-
-
- [10] Each character is processed exactly once by the Tcl
- interpreter as part of creating the words of a command.
- For example, if variable substition occurs then no
- further substitions are performed on the value of the
- variable; the value is inserted into the word
- verbatim. If command substitution occurs then the
- nested command is processed entirely by the recursive
- call to the Tcl interpreter; no substitutions are
- perfomed before making the recursive call and no
- additional substitutions are performed on the result of
- the nested script.
-
- [11] Substitutions do not affect the word boundaries of a
- command. For example, during variable substitution the
- entire value of the variable becomes part of a single
- word, even if the variable's value contains spaces.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 4 (printed 7/17/95)
-
-
-
-